package org.alis.smallcc.designpatterns.structural.decorator;
/**
 * 装饰者模式
 * 
 * 需要实现的需求
 * 假如我有一个电脑
 * 现在我想要加一个显示器 加一个内存条 换一个cpu
 * 如何实现？ 
 * 装饰者很大程度上面优化了这个需求
 * 
 * @author luochuan
 */
public class Main {
	
	public static void main(String[] args) {
		// 我有一个笔记本 
		IComputer noteBookComputer = new NoteBookComputer();
		// 有一个台式机
		IComputer baseComputer = new BaseComputer();
		
		// 台式机我想加两个显示器
		// 台式机加一个8g的 和一个普通内存条
		baseComputer = new TwoDisplayComputer(baseComputer);
		baseComputer = new HighComputer(baseComputer).addHardware(new KingstonMemery());
		
		// 笔记本我想加一个8G的内存条
		noteBookComputer = new HighComputer(noteBookComputer);
		
		System.out.println(baseComputer.desc());
		System.out.println("台式的价格"+baseComputer.count());
		System.out.println(noteBookComputer.desc());
		System.out.println("笔记本的价格"+noteBookComputer.count());
	}

}
